package generator.workflow;

import generator.datastructure.WritebleClass;
import generator.util.input_interpreter.ParallelizerInterpreter;

/**Esta interface define los pasos genéricos que se aplican en la construcción de una clase Peer.
 * Estos pasos son igualmente aplicables a todo middleware que emplee el mecanismo de
 * {@link java.util.concurrent.Future} para lograr los puntos de sincronnía entre la asignación de 
 * valor y el uso de un resultado grid. Por otra parte, estos pasos no se encuentran estrictamente 
 * atados a ningún middleware de gridificación específico ni tampoco a determinada biblioteca de
 * manipulación de código java, aspectos que deberán defirse en las clases que implementen esta
 * interface
 * @author Hirsch-Fernández*/
public interface PeerClassBuilder {

		
	/**@return la clase peer que constituye el producto final luego del proceso de construcción dirigido
	 * por la clase {@link PeerClassDirector}*/
	public WritebleClass getPeerClass();
	
	/**Este método es el primero que se invoca en la construcción de clase peer y sirve para indicar
	 * la clase secuencial que debe paralelizarse.
	 * @param pi
	 * 			interprete de paralelización 
	 * @return true si el proceso de paralelización puede continuar. False en caso contrario.*/
	public boolean loadSequentialClass(ParallelizerInterpreter pi); 

}
